Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Интерфейс пользователя для закачки на сервер и скачки файлов с сервера (HellParty)
Author Message
HellParty
Заглянувший



Joined: 29 May 2008
Posts: 10
Карма: -3
   поощрить/наказать


PostPosted: Mon Jun 09, 2008 3:18 pm (написано за 3 минуты 13 секунд)
   Post subject: Интерфейс пользователя для закачки на сервер и скачки файлов с сервера
Reply with quote

Удобный и красивый интерфейс пользователя для закачки на сервер и скачки файлов с сервера с запросом пароля, поддержкой руских букв в названиях - подскажите как лучше сделать
Есть скриптик для отображения файлов в директории
Code (php): скопировать код в буфер обмена
<?php

/*
lophty directory indexer
copyright 2001 brian donovan, indexer-script@lophty.com


Patch Contributors

Sept 09, 2001
Tim Waugh (tim@cyberelk.net, http://www.cyberelk.net/tim/)
Added support for multi-dot file names (ex. stuff.under.mytoenail.foo as
opposed to single-dot file names like stuff.foo)


This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/


#---------------------------------------------------
/*
$thisFileName  : the name of this file

$thisDirectory : the path to the directory in which this page sits.  For
        Apache-served sites, you can use the predefined $REQUEST_URI variable.
        Note that you can also specify a string, like a full url, but this will not affect
        the directory that's actually indexed. :D

$thisPageFilesDir : the name of a directory in which we'll put the css file and gifs that we need to beautify this page
        Note that you don't have to put those files into a directory separate from this file.  I just do it to make global changes
        for all of these indexing pages possible - by putting the css file and gifs into a folder and then giving $thisPageFilesDir
        the value of the path to that folder, you can update the bullets or the general appearance of the page by changing a few files
        in one location.  If you want to put these files into the same directory as this page, that's fine - just give $thisPageFilesDir
        a value of ""

$bulletImgsArr : holds the filenames of the images used as bullets

Finally, remember to change the permissions on subdirectories that will be listed by this script if you would like visiors to be
able to drill down into them
*/

#---------------------------------------------------

$thisFileName = "index.php";
$thisDirectoryPath = $REQUEST_URI;

$thisServerName = $SERVER_NAME;

$thisPageFilesDir = "indexerfiles/";

$thisPageCssFile= $thisPageFilesDir."dirindexer.css";

$fileImgProps = array (www.php.net/array)('filepath' => $thisPageFilesDir."file.gif", 'height' => '13', 'width' => '13');
$dirImageProps = array (www.php.net/array)('filepath' => $thisPageFilesDir."dir.gif", 'height' => '13', 'width' => '13');
$bulletImgsArr = array (www.php.net/array)('fileImg' => $fileImgProps, 'dirImg' => $dirImageProps);

#---------------------------------------------------
/*
Add the name of this file and the namess of the files and dirs used with it to arrays.  When the files and directories
are read in, files and dirs in these 2 arrays will not by listed or counted when this page is viewed.  If there are any other files
other than those actually used by this page that you'd rather not have so readily available to others through this page, you can
add them into these arrays
*/

#---------------------------------------------------


$dontListFiles = array (www.php.net/array)($thisFileName, $bulletImgsArr['dirImg']['filepath'], $bulletImgsArr['fileImg']['filepath'], $thisPageCssFile);
$dontListDirs = array (www.php.net/array)($thisPageFilesDir, "cgi-bin", "indexerfiles");

function getThisDirName($url)
{
        #---------------------------------------------------
        /*
                getThisDirName : Accepts the path to the directory either in the form of $REQUEST_URI
                        or a string value and pulls out the directory name
        */

        #---------------------------------------------------
        $afterCutOne = substr (www.php.net/substr)($url, 0, strrpos (www.php.net/strrpos)($url, "/"));
        $afterCutTwo = substr (www.php.net/substr)($afterCutOne, strrpos (www.php.net/strrpos)($afterCutOne, "/") - strlen (www.php.net/strlen)($afterCutOne) + 1);
        return $afterCutTwo;
}

#---------------------------------------------------
/*
        isort and isortMultiD are 2 sorting functions used to add pseudo
                alphabetical order to the list of directory names and file names
*/

#---------------------------------------------------

function isort($a,$b)
{
        #---------------------------------------------------
        /*
                isort :

                        ord (http://www.php.net/manual/en/function.ord.php) returns the ASCII value of the first character in a string (the ASCII value of a capital letter is different from that of a lower case letter)

                        strtolower  (http://www.php.net/manual/en/function.strtolower.php) converts all uppercase chrs in a string to lowercase

                        This function compares the lower-cased first letter in one string to that in another.  We'll use it to compare directory names
        */

        #---------------------------------------------------
        if(ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($a)) == ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($b))) return 0;
        return (ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($a))< ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($b))) ? -1: 1;
}

function isortMultiD($a,$b)
{
        #---------------------------------------------------
        /*
                isortMultiD : This function basically is the same as issort, except that it runs the comparison between the 2nd row in each array, then the first.
                        We'll be using it to sort the filenames, where the j in $filesArr[i][j] is the extension (bmp, gif, jpg, etc) and the i is the name itself.
        */

        #---------------------------------------------------
    if(ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($a[count (www.php.net/count)($a) - 1])) == ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($b[count (www.php.net/count) ($b) - 1])))
        {
                if(ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($a[0])) == ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($b[0]))) return 0;
                return (ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($a[0]))< ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($b[0]))) ? -1: 1;
        }
        return (ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($a[count (www.php.net/count) ($a) - 1])) < ord (www.php.net/ord)(strtolower (www.php.net/strtolower)($b[count (www.php.net/count) ($b)]))) ? -1: 1;
}

function indexdirThisDir()
{
        #---------------------------------------------------
        /*
                indexdirThisDir : This function scours through the current directory (regardless of which directory u specify via the getThisDirName call)
                        and makes a list of directories and does the same for files,  first by their extensions
                        and then by their names.  Remember that since it's only alphabetical on the first char php and phtml or php3 and php files will be jumbled together,
                        as will html and htm (the same logic holds for file names).
        */

        #---------------------------------------------------
        global (www.php.net/global) $bulletImgsArr;
        global (www.php.net/global) $dontListFiles;
        global (www.php.net/global) $dontListDirs;

        $numHiddenDirs = 0;
        $numHiddenFiles = 0;

        $dirsArr = array (www.php.net/array)();
        $filesArr = array (www.php.net/array)();

        $this_dir_handle=opendir (www.php.net/opendir)('.'); # get a handle on the current directory
        while (false!==($fileORdir = readdir (www.php.net/readdir)($this_dir_handle)))
        {
                if ($fileORdir != "." && $fileORdir != "..")
                {
                        if(is_dir (www.php.net/is_dir)($fileORdir)== false)
                        {
                                $thisFileNoShow = 0;
                                for ($i = 0; $i < count (www.php.net/count)($dontListFiles); $i++)
                                {
                                        if($fileORdir == $dontListFiles[$i])
                                        {
                                                $thisFileNoShow = 1;
                                                $numHiddenFiles++;
                                                break;
                                        }
                                }
                                if($thisFileNoShow == 0)
                                {
                                        $fileNameAndextensionArr = explode (www.php.net/explode)(".", $fileORdir);
                                        array_push (www.php.net/array_push) ($filesArr, $fileNameAndextensionArr);
                                }
                        }
                        else
                        {
                                $thisDirNoShow = 0;
                                for ($i = 0; $i < count (www.php.net/count)($dontListDirs); $i++)
                                {
                                        if($fileORdir == $dontListDirs[$i])
                                        {
                                                $thisDirNoShow = 1;
                                                $numHiddenDirs++;
                                                break;
                                        }
                                }
                                if($thisDirNoShow == 0)
                                {
                                array_push (www.php.net/array_push) ($dirsArr, $fileORdir);
                                }
                        }
                }
        }
        closedir (www.php.net/closedir)($this_dir_handle);

        $listingHTML .= "<div id=\"thisdircontains\">  : ".count($dirsArr)."  : ".count($filesArr)."</div>\n";

        usort (www.php.net/usort)($dirsArr, 'isort');
        usort (www.php.net/usort)($filesArr, 'isortMultiD');

        $listingHTML .="\n<div id=\"dirslist\">\n";
        for ($i = 0; $i < count (www.php.net/count)($dirsArr); $i++)
        {
                $listingHTML .= "<a href=\"".$dirsArr[$i]."/\" class =\"dirs\"><img src=\"".$bulletImgsArr['dirImg']['filepath']."\" height=\"".$bulletImgsArr['dirImg']['height']."\" width=\"".$bulletImgsArr['dirImg']['width']."\" alt=\"file\" />".$dirsArr[$i]."</a> <br /> \n";
        }
        $listingHTML .="</div>\n\n";

        $listingHTML .="<div id=\"fileslist\">\n<table>\n<tr><td>file</td><td>size (kb)</td><td>last modified</td></tr>\n";
        for ($i = 0; $i < count (www.php.net/count)($filesArr); $i++)
        {
                $filesArr[$i] = join (www.php.net/join) (".", $filesArr[$i]);
                $fileStats = stat (www.php.net/stat)($filesArr[$i]);
                $fileSizeInKb = round (www.php.net/round)(($fileStats[7]/1024),2);
                $fileLastMod = date (www.php.net/date)("H : i  M dS Y", $fileStats[9]);
                $listingHTML .= "<tr><td><a href=\"".$filesArr[$i]."\" class =\"files\"><img src=\"".$bulletImgsArr['fileImg']['filepath']."\" height=\"".$bulletImgsArr['fileImg']['height']."\" width=\"".$bulletImgsArr['fileImg']['width']."\" alt=\"file\" />".$filesArr[$i]."</a></td><td class=\"filedetails\">".$fileSizeInKb."</td><td class=\"filedetails\">".$fileLastMod."</td></tr> \n";
        }
        $listingHTML .='</table></div>';

        return $listingHTML;
}

$thisDirName = getThisDirName($thisDirectoryPath);
$listingHTMLstring = indexdirThisDir();

//header( "Content-type: text/html" );

print (www.php.net/print) ("
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\" >
<head>
<title>index of $thisDirName</title>
<link rel=\"stylesheet\" type=\"text/css\" href=\"$thisPageCssFile\" />
</head>

<body>
<h1>$thisDirName</h1>
$listingHTMLstring

<div id=\"copy\">
   
 &#169; 2001 <a href=\"mailto:indexer-script@lophty.com\">brian donovan</a>
<br />

<a ...../a>



</div>

</body>
</html>"
);
?>
Надо сделать чтобы не выводились сами файлы *.html, *.php, а также кнопку "скачать" возле каждой строчки с файлом и добавить возможность закачки в данную папку
Back to top
View user's profile Send private message Send e-mail
Николай Павлюк
Участник форума



Joined: 26 Feb 2005
Posts: 34
Карма: 0
   поощрить/наказать


PostPosted: Wed Jun 11, 2008 1:45 pm (спустя 1 день 22 часа 26 минут; написано за 16 секунд)
   Post subject:
Reply with quote

Вы думаете, что кто-то будет вчитываться в эту кашу?
Back to top
View user's profile Send private message
HellParty
Заглянувший



Joined: 29 May 2008
Posts: 10
Карма: -3
   поощрить/наказать


PostPosted: Thu Jun 12, 2008 3:44 pm (спустя 1 день 1 час 58 минут; написано за 57 секунд)
   Post subject:
Reply with quote

Можно скопировать в php-редактор для лучшей читабельности Предложите свою кашу, может она лучше
Back to top
View user's profile Send private message Send e-mail
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 37
   поощрить/наказать

Location: Киев

PostPosted: Fri Jun 13, 2008 3:06 pm (спустя 23 часа 22 минуты; написано за 51 секунду)
   Post subject:
Reply with quote

Да какая разница, в тарелке каша или в кастрюле? :0)
Если она несъедобная, можно сразу в унитаз выбросить.
Back to top
View user's profile Send private message Send e-mail
Николай Павлюк
Участник форума



Joined: 26 Feb 2005
Posts: 34
Карма: 0
   поощрить/наказать


PostPosted: Sat Jun 14, 2008 8:31 pm (спустя 1 день 5 часов 24 минуты; написано за 1 минуту 19 секунд)
   Post subject:
Reply with quote

HellParty, можно было бы о чем-то говорить (и потратить пол часа чтобы вникнуть в простыню кода), если Вы хотя бы написали, что лично Вы сделали для решения задачи, и что конкретно у Вас не получилось.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML